import { BrowserWindow, Menu, app,screen  } from 'electron'
import { platform } from "os"
import menuconfig from '../config/menu'
import { openDevTools, IsUseSysTitle, UseStartupChart } from '../config/const'
import setIpc from './ipcMain'
const ipcMain = require('electron').ipcMain;
import { winURL, loadingURL, loadingURL1 } from '../config/StaticPath'
var loadWindow = null
var mainWindow = null
setIpc.Mainfunc(IsUseSysTitle)

function createMainWindow() {
  /**
   * Initial window options
   */
  mainWindow = new BrowserWindow({
    height: 600,
    useContentSize: true,
    width: 680,
    minWidth: 680,
    show: false,
    frame: IsUseSysTitle,
    titleBarStyle: platform().includes('win32') ? 'default' : 'hidden',
    webPreferences: {
      contextIsolation: false,
      nodeIntegration: true,
      webSecurity: false,
      // 如果是开发模式可以使用devTools
      devTools: process.env.NODE_ENV === 'development' || openDevTools,
      // devTools: true,
      // 在macos中启用橡皮动画
      scrollBounce: process.platform === 'darwin',
      webviewTag:true
    }
  })

  // 这里设置只有开发环境才注入显示开发者模式
  if (process.env.NODE_ENV === 'development' || openDevTools) {
    menuconfig.push({
      label: '开发者设置',
      submenu: [{
        label: '切换到开发者模式',
        accelerator: 'CmdOrCtrl+I',
        role: 'toggledevtools'
      }]
    })
  }
  // 载入菜单
  const menu = Menu.buildFromTemplate(menuconfig)
  Menu.setApplicationMenu(menu)
  mainWindow.loadURL(winURL)

  mainWindow.webContents.once('dom-ready', () => {
    mainWindow.show()
    if (process.env.NODE_ENV === 'development' || openDevTools) mainWindow.webContents.openDevTools(true)
    if (UseStartupChart) loadWindow.destroy()
  })
  mainWindow.on('maximize', () => {
    mainWindow.webContents.send("w-max", true)
  })
  mainWindow.on('unmaximize', () => {
    mainWindow.webContents.send("w-max", false)
  })
  mainWindow.on('closed', () => {
    mainWindow = null
    app.quit();
  })
  // 当窗口失去焦点时（即最小化时）
  // mainWindow.on('blur', () => {
  //   // 最小化到指定页面
  //   mainWindow.loadURL(winURL)
  // })

  // 当窗口准备就绪时最小化窗口
  // mainWindow.on('ready-to-show', () => {
  //   mainWindow.minimize();
  // });

  // 获取到打印机列表
  ipcMain.on('allPrint', () => {
    mainWindow.webContents.getPrintersAsync().then(printers => {
      // 把获取的打印机列表发送给渲染进程
      mainWindow.webContents.send('printName',printers)
    })
  })
  createSBallWindow()
}

//创建悬浮球
let win2 = null
function createSBallWindow() {
  win2 = new BrowserWindow({
    width: 160, //悬浮窗口的宽度 比实际DIV的宽度要多2px 因为有1px的边框
    height: 60, //悬浮窗口的高度 比实际DIV的高度要多2px 因为有1px的边框
    type: 'toolbar',  //创建的窗口类型为工具栏窗口
    frame: false,  //要创建无边框窗口
    resizable: false, //禁止窗口大小缩放
    show: false,  //先不让窗口显示
    webPreferences: {
      devTools: true, //关闭调试工具
      nodeIntegration: true,
    },
    transparent: true, //设置透明
    hasShadow: false, //不显示阴影
    alwaysOnTop: true, //窗口是否总是显示在其他窗口之前
  })
  //通过获取用户屏幕的宽高来设置悬浮球的初始位置
  const { left, top } = { left: screen.getPrimaryDisplay().workAreaSize.width - 260, top: screen.getPrimaryDisplay().workAreaSize.height - 850 }
  win2.setPosition(left, top) //设置悬浮球位置
  win2.loadURL(loadingURL1)
  win2.once('ready-to-show', () => {
    win2.show()
  })
  win2.on('close', () => {
    win2 = null
  })
}

function loadingWindow() {
  loadWindow = new BrowserWindow({
    width: 400,
    height: 600,
    frame: false,
    backgroundColor: '#222',
    skipTaskbar: true,
    transparent: true,
    resizable: false,
    webPreferences: { experimentalFeatures: true, devTools: true }
  })

  loadWindow.loadURL(loadingURL)

  loadWindow.show()

  setTimeout(() => {
    createMainWindow()
  }, 2000)

  loadWindow.on('closed', () => {
    loadWindow = null
  })
}

function initWindow() {
  if (UseStartupChart) {
    return loadingWindow()
  } else {
    return createMainWindow()
  }
}
export default initWindow
